package com.yc.thread;

public class Demo4 {
	
	int count;
	
	// 同步方法1  实例方法属于某个对象， 同步方法锁定的就是当前 this
	public synchronized void add1() {
		// 原子操作
		count++;
	}
	
	// 同步方法2
	public synchronized void add2() {
		count++;
	}
	
	public void add3() {
		synchronized(this) {
			// 同步代码块
			count++;
		}
		
	}
	
	public static void main(String[] args) throws InterruptedException {
		
		Demo4 demo = new Demo4();
		
		for (int i = 0; i < 1000; i++) {
			if(i%3==0) {
				new Thread(()->demo.add1()).start();
			} else if(i%3==1) {
				new Thread(()->demo.add2()).start();
			} else if(i%3==2) {
				new Thread(()->demo.add3()).start();
			}
		}
		
		Thread.sleep(1000);
		
		System.out.println(demo.count);
		
	}
	

}
